package com.imooc.SmartChargeStation.demo.mqtt.FacoryMode.service;

import com.imooc.SmartChargeStation.demo.mqtt.FacoryMode.model.MqttConstants;
import org.springframework.integration.annotation.IntegrationComponentScan;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.mqtt.support.MqttHeaders;
import org.springframework.messaging.handler.annotation.Header;

@IntegrationComponentScan
@MessagingGateway(defaultRequestChannel = MqttConstants.OUT_CHANNEL)
/*
    @IntegrationComponentScan：用于扫描当前包及子包下的 Spring Integration 特定组件（如消息通道Channel、适配器Adapter、网关Gateway等），
    确保这些组件能被 Spring 容器识别并纳入管理。
    @MessagingGateway(defaultRequestChannel = MqttConstants.OUT_CHANNEL)：标识当前接口为一个 消息网关（Message Gateway），
    作为业务代码与消息中间件（这里是 MQTT 服务器）之间的 “桥梁”。
 */
public interface MqttService {
/*
    怎么理解？
    答：MqttService接口本质是一个消息网关（Gateway），它的作用是：提供了一个简单的
    “发送MQTT消息”的入口。业务代码只需要调用这个接口的send()方法，就可以将消息发送给MQTT服务器了。
 */
    //将方法参数topic的值，设置为 MQTT 消息头中的 “主题” 信息，最终消息会发送到该主题下。
    void send(@Header(MqttHeaders.TOPIC)String topic, String message);
}
